import Vue from 'vue'
import Vuex from 'vuex'

/* 导入模块 */
import user from './modules/user'
import setting from './modules/setting'
Vue.use(Vuex)

export default new Vuex.Store({
	// strict: true,//代码严格模式，必须严格按照他的语法执行
	state: {
		/* 定义数据的 */
		count: 101,
		name: 'jack',
		list: [ 1, 2, 3, 4, 5 ]
	},
	mutations: {
		/* 更改数据===state中的数据只能通过mutations更改 ==同步操作 */
		addHandle(state, obj) {
			console.log(state.count, 55566)
			state.count += obj.n
		},
		addHandle2(state, m) {
			// console.log(state.count, 55566)
			state.count += m
		},
		changeName(state, name) {
			state.name = name
		}
	},
	actions: {
		/* 异步操作 */
		// syncHandle(context) {
		// 	setTimeout(() => {
		// 		console.log(context, '我是mutaions中的异步函数')
		// 		context.commit('addHandle2')
		// 	}, 1000)
		// }
		syncHandle({ commit }, m) {
			setTimeout(() => {
				// console.log(context, '我是mutaions中的异步函数')
				commit('addHandle2', m)
			}, 1000)
		},
		changeName({ commit }, name) {
			commit('changeName', name)
		}
	},
	getters: {
		total(state) {
			console.log('getters', state.list)
			return state.list.reduce((sum, item) => sum + item, 0)
		}
	},
	modules: {
		/* 模块名:导入的模块 */
		user,
		setting
	}
	/* 获取模块中的数据公式  this.$store.state.模块名.找数据 */
})
